package com.hb.model;

import org.springframework.data.neo4j.annotation.EndNode;
import org.springframework.data.neo4j.annotation.GraphId;
import org.springframework.data.neo4j.annotation.RelationshipEntity;
import org.springframework.data.neo4j.annotation.StartNode;

/**
 * 在这个新的模型中，订单中产品的数量是条目中的一个属性，而产品本身是另外一个概念。与前面一样，订单和产品都是节点，而条目是关联关系。
 * 因为现在的条目必须要包含一个数量值，关联关系不像前面那么简单。
 * 关联关系实体的特殊之处在于它们连接了两个节点。@StartNode 和 @EndNode 注解用在定义关联关系两端的属性上。在本例中，Order 是开始节点，Product 是结束节点。
 */
@RelationshipEntity(type = "HAS_LINE_ITEM_FOR")
public class LineItem {
    /**
     * 不管是节点实体还是关联关系实体，都必须要有一个图 ID，而且其类型必须为 Long。
     */
    @GraphId
    private Long id;

    /**
     * 开始节点
     */
    @StartNode
    private Order order;

    /**
     * 结束节点
     */
    @EndNode
    private Product product;

    /**
     * 当关联关系创建的时候，它会持久化到数据库中。
     */
    private int quantity;
}
